package com.star.common.utils;

import lombok.extern.slf4j.Slf4j;
import org.bytedeco.javacv.FFmpegFrameGrabber;

/**
 * 媒体文件工具
 *
 * @author yangzj
 */
@Slf4j
public class MediaUtil {

    /**
     * 获取视频或音频文件时长（秒）
     *
     * @param filePath 文件路径/http开头网络也行
     * @return long
     */
    public static int getSeconds(String filePath) {
        try (FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(filePath)) {
            grabber.start();
            // 这一步获取的是微妙，除以 1000000 获取保留整数部位的秒
            return Math.toIntExact(grabber.getLengthInTime()) / 1000000;
        } catch (Exception e) {
            log.error("获取视频或音频文件时长失败filePath:{}", filePath, e);
            return -1;
        }
    }
}
